// 配置axios

import axios from "axios"
import { MessageBox, Message, Loading } from "element-ui"
import storage from "./storage"


let http = axios.create({
    baseURL: "/api",
    timeout: 5000,//超时设置
    withCredentials: true,//携带本地凭据 比如cookie

})

// 全局的请求拦截器 对接口的请求批量进行统一处理

let fullScreenLoading = null

http.interceptors.request.use(config => {
    // 先获取本地的token 然后携带给后端
    let token = storage.get("qf-token")
    // console.log(token)

    config.headers['authorization'] = token

    if (config.url.indexOf('login') !== -1 || config.url.indexOf('wechatLogin') !== -1) {
        fullScreenLoading = Loading.service({
            lock: true,
            text: 'Loading',
            spinner: 'el-icon-loading',
            background: 'rgba(0, 0, 0, 0.7)'
        })
    }



    //    config就是所有的请求配置
    return config //放行 不return 那么不能将请求真正的发送出去

})

// 全局响应拦截 统一对错误进行处理
http.interceptors.response.use(config => {
    if(fullScreenLoading){
        fullScreenLoading.close()
        fullScreenLoading=null
    }
    let { state, msg } = config.data;
    if (!state) {
        //后台响应了错误的结果
        MessageBox({
            message: msg,
            title: '错误提示',
            type: 'error'
        })
    }
    // 10022 1004这俩个状态码分别对应token过期喝session过期
    // 10026没遇权限
    // 清除本地缓存 情调token
    let { code } = config.data;
    if (code === "10022" || code === "1004") {
        Message.error("登入过期,请重新登入")
        storage.rm("qf-token")
        location.reload()
    }



    return config
})

export default http